[yuseok89] WEEK 03 Solutions#2719
Conversation
📊 yuseok89 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-5-nano)
|
There was a problem hiding this comment.
해당 풀이는 Immutable 한 string을 하나 더 만들기 때문에 O(N)의 공간복잡도를 가질거에요!
설명
regex없이 two pointer로 접근해보시는것도 좋은 경험이 되실겁니다.
There was a problem hiding this comment.
아주 개인적인 의견으로는
- for loop안의 if-else 부분도 max로 한줄로 깔끔하게 정리하면 보기 좋을것 같아요!
- sum과 ans를 nums[0]으로 설정하셨는데 for loop도 0번 index부터 시작하는건 중복 검사 같네요, 1번 index부터 검사하시는게 로직상 맞지 않을까 하는 생각이 듭니다.
There was a problem hiding this comment.
다 좋으신데, 백트래킹 부분이 너무 복잡한거 같아요
별도의 함수로 제외하지 않고 구현하시면 훨씬 보기 좋게 될거 같아요
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Backtracking, Depth-First Search
- 설명: 이 코드는 후보 배열에서 재귀적으로 모든 조합을 탐색하며, 합이 목표와 같아지면 해를 추가하고, 각 후보를 다시 재귀 호출하는 구조로 Backtracking 패턴을 사용합니다. DFS 방식으로 트리 형태의 탐색 공간을 탐색합니다.
📊 시간/공간 복잡도 분석
| 복잡도 | |
|---|---|
| Time | O(k * C) |
| Space | O(k) |
피드백: 재귀 깊이가 후보 배열의 길이에 따라 달라지며, 중복 제거 없이 같은 원소를 여러 번 뽑을 수 있도록 구현되어 있다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Dynamic Programming, Backtracking
- 설명: 문제는 문자열 디코딩 방법의 개수를 DP로 점화식으로 계산합니다. 재귀 함수에 메모이제이션을 사용해 중복 계산을 줄이며, 부분 문제를 합쳐 최종 해를 구하는 구조입니다.
📊 시간/공간 복잡도 분석
ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.
풀이 1: Solution.numDecodings — Time: O(n) / Space: O(n)
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 상태 수를 줄여 중복 계산을 제거했지만, 재귀 대신 배열 기반 반복으로도 구현 가능하다.
개선 제안: 현재 구현이 적절해 보입니다.
풀이 2: Solution.rec — Time: O(n) / Space: O(n)
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 입력 길이에 선형적으로 의존하는 동적계획으로 구성되어 있다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Greedy, Dynamic Programming
- 설명: 배열을 순회하며 부분 배열의 합을 최적화하는 Kadane 알고리즘으로, 현재 위치의 값과 이전 합의 합을 비교해 누적 합을 갱신하는 관점은 그리디 성격과 DP 점화식의 핵심을 모두 보여줍니다.
📊 시간/공간 복잡도 분석
ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.
풀이 1: Solution.maxSubArray — Time: ✅ O(N) → O(n) / Space: ✅ O(1) → O(1)
| 유저 분석 | 실제 분석 | 결과 | |
|---|---|---|---|
| Time | O(N) | O(n) | ✅ |
| Space | O(1) | O(1) | ✅ |
피드백: 4줄짜리 간결한 구현으로 최적의 시간/공간 복잡도를 달성한다.
개선 제안: 현재 구현이 적절해 보입니다.
풀이 2: Solution.maxSubArray (주석 대안) — Time: O(n) / Space: O(1)
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(1) |
피드백: 주석은 실행에 영향 없이 대안을 보여준다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Bit Manipulation
- 설명: 주어진 코드는 정수의 이진 표현에서 1의 개수를 세는 방식으로, 비트를 직접 다루는 비트 조작 패턴에 해당합니다. 반복문으로 각 비트를 검사하며 1의 개수를 누적합니다.
📊 시간/공간 복잡도 분석
| 유저 분석 | 실제 분석 | 결과 | |
|---|---|---|---|
| Time | O(logN) | O(n) | ❌ |
| Space | O(1) | O(1) | ✅ |
피드백: 입력 정수의 비트 수에 비례하는 선형 시간, 상수 공간이다.
개선 제안: 현재 구현이 적절해 보입니다.
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: Two Pointers, Greedy
- 설명: 문자열을 앞뒤에서 포인터로 이동하며 유효 문자만 비교하는 흐름은 Two Pointers 패턴에 해당합니다. 또한 대칭 비교로 판별하는 구조는 간단한 조건 판단으로 끝나므로 그 자체로 Greedy의 직관적 판단과도 연결됩니다.
📊 시간/공간 복잡도 분석
| 유저 분석 | 실제 분석 | 결과 | |
|---|---|---|---|
| Time | O(N) | O(n) | ✅ |
| Space | O(1) | O(1) | ✅ |
피드백: 대소문자 무시 및 비문자 제거를 한 단일 패스로 검사한다.
개선 제안: 현재 구현이 적절해 보입니다.
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!